package kgame5.kgui.kcomp.compajax {
/**
 * @author kangkai
 */
import flash.geom.*;

public class AJAXList {
	//________________________Property__________________________
	
	private var aItem:Array;
	
	private var initX:int;//此列的x的位置
	
	public var masterTable:AJAXTable;
	
	//自己的区域,用来判断是否ajaxItem被拖动到了list的末尾
	public var rectArea:Rectangle;
	
	//自己的列的标志，这个是board初始化的时候用的
	public var colIdx:int=0;
	//________________________Method________________________
	public function AJAXList(){
		aItem=new Array();
	}
	
	public function getX():int{
		return initX;
	}
	public function size():int{
		return aItem.length;
	}
	public function onAddedToTable(table:AJAXTable,p_initX:int,p_colIdx:int){
		masterTable=table;
		initX =p_initX;// 
		rectArea=new Rectangle(initX,0,masterTable.ItemWidth,20000); 
		
		colIdx=p_colIdx;
	}

	public function addItem(item:AJAXItem){
		aItem.push(item);
		
		item.onAddedToList(this);
		
		refresh();
	}
	
	public function removeItem(item:AJAXItem){
		for(var i:int=0;i<aItem.length;i++){
			if(aItem[i]==item){
				aItem.splice(i,1);
				break;
			}
		}
		
		refresh();
	}
	
	public function getItemAt(idx:int):AJAXItem{
		return AJAXItem(aItem[idx]);
	}
	
	//abc,如果在2插入d，则是adbc
	public function insertItemAt(idx:int,item:AJAXItem){
		aItem.splice(idx,0,item);
		item.onAddedToList(this);
		refresh();
	}
	//某条目更改了高度
	public function onItemChangeHeight(item:AJAXItem){
		refresh();
		moveAllFace();
	}
	//所有界面都移动到指定位置
	public function moveAllFace(){
		for(var i:int=0;i<aItem.length;i++){
			aItem[i].moveFace();
		}
	}
	//取得某条目的索引
	public function contains(item:AJAXItem):int{
		for(var i:int=0;i<aItem.length;i++){
			if(aItem[i]==item){
				return i;
			}
		}
		return -1;
	}
	//根据itemn的高度放好各个item的realBody的位置
	private function refresh(){
		var tempHeight:int=0;
		for(var i:int=0;i<aItem.length;i++){
			var item:AJAXItem=AJAXItem(aItem[i]);
			item.placeBody(initX,tempHeight);
			tempHeight+=item.getHeight()+masterTable.VSpace;
		}
		
		//通知master说自己refresh了，
		masterTable.notifyRefreshed();
	}
	
	//取得这个list的总高度，注意这个最好是要他在refresh
	public function getHeight():Number{
		if(size()==0){
			return 0;
		}else{
			var lastItem:AJAXItem=aItem[size()-1];
			return lastItem.getRealBodyMC().y+lastItem.getRealBodyMC().height;
		}
	}
}//end of class
}
